package lu.med.praxiswahl.wahlumed.service.beans.serviceinterface;

import java.util.Calendar;
import java.util.Set;

import lu.med.praxiswahl.wahlumed.model.beans.BillsContentsTBL;
import lu.med.praxiswahl.wahlumed.model.beans.CustomerTBL;
import lu.med.praxiswahl.wahlumed.model.beans.HonorarTBL;

/**
*
* @author Patrick kendzo
* Email: pkendzo@msn.com
*/

public interface OPHonorarKlasseZwei_ServiceInt
{

	public static final int	RET_OPERATION_DONE_PROPERLY	= 0;
	public static final int	RET_OPERATION_FAILED		= 1;

	/* Erstellt eine Rechnung einschlie�lich Inhalt und erstelltDatum */
	public int create_PAYED_Bill(Long rechnungs_nummer, String matricule,
			Boolean erstellt, Boolean bezahlt, Calendar erstelltDatum);

	/* Erstellt eine unbezahlte Rechnung */
	public int create_ACTUAL_Bill(Long rechnungs_nummer, String matricule,
			Boolean erstellt, Boolean bezalht, Calendar erstelltDatum);

	/* F�r nicht erstellte Rechnung */
	public int create_NICHTERSTELLTE_Bill(Long rechnungs_nummer,
			Boolean erstellt, Boolean bezalht, String matricule,
			Calendar erstelltDatum);

	public Long[] getNichtErstellteRechnungen();

	/* wird m�glicherweise nicht gebraucht wegen creatBill(siehr oben) */
	public int markBill_AS_NichtErstellt();

	/* Macht eine nicht erstellte Rechnung zu einer erstellten Rechnung */
	public int markNichtErstellt_AS_Erstellt();

	/*
	 * Liefert alle Rechnungen zur�ck, die �lter als oder gleichalt wie date
	 * sind
	 */
	public Long[] getBillsOlderThanOf(String matricule, Calendar date);

	/* Liefert alle Rechnungen zur�ck, die weniger als x Jahre alte sind */
	public Long[] getBillsNewerThanOf(String matricule, Calendar date);

	public Long[] get_ERLEDIGTE_BillsByCustomer(String matricule);

	public Long[] get_ERSTELLTE_BillsByCustomer(String matricule);

	public Long[] get_ACTUAL_BillsByCustomer(String matricule);

	public CustomerTBL getPatientin();

	public int deleteBill(Long id);

	public String getRueckueberweisungDatum();

	public void setRueckueberweisungDatum(String rueckUeberweisung_datum);

	/*
	 * Gibt der aktuelle Primarykey indes der Datenbank zur�ck. dies
	 * erm�glich laufende Nummer f�r die Ordonancenummer zu erstellen.
	 */
	public Long getSubPrimaryKeyIndex();

	/* Aktualisiert eine Rechnung */
	public int updateBill();

	public int updateBillContent(BillsContentsTBL item);
	
	/* Gibt eine Rechnung zur�ck */
	public void getBill(Long rechnungs_nummer);

	public HonorarTBL getBillByID(Long rechnungs_nummer);

	public boolean isRetransfered();

	public void setRetransfered(boolean value);

	public String getBesonderheit();

	public void setBesonderheit(String besonderheit);
	
    public String getNoten();
    public void setNoten(String Noten);
    
    public double getAPayer();
	public void setAPayer(double payer);

	public String getKartenTyp();

	public void setKartenType(String karten_typ);

	public boolean isSchwanger();

	public void setSchwanger(boolean value);

	public double getAnzahlung();

	public void setAnzahlnung(double anzahlung);

	public boolean isBezahlt();

	public void setBezahlt(boolean value);

	public boolean isSent();

	public void setSended(boolean value);

	public boolean isInPC();

	public void setInPC(boolean value);

	public boolean isCreated();

	public void setCreated(boolean value);

	public boolean isCashPayed();

	public void setCashPayed(boolean value);

	public boolean kartePayed();

	public void setKartePayed(boolean value);

	public boolean payedBytransfer();

	public void setpayedBytransfer(boolean value);

	public Calendar getErstellDatum();

	public void setErstellDatum(Calendar date);

	public Set<BillsContentsTBL> getContentsOfBill();

	public void setContentsOfBill(Set<BillsContentsTBL> contents);

	/*************************************** FOR OPERATION WITH THE BILLCONTENTSERVICE ****************************************************/

	/* Setz der aktuelle BillContent im Speicher */
	public void getActualBillContentService(Long id);

	public String getDATE_DENT_HEURE_OF_ActualBillContent();

	public String getH_OF_ActualBillContent();

	public String getMED_OF_ActualBillContent();

	public String getCODE_TARIF_LIBELLE_OBJECT_OF_ActualBillContent();

	public double getMONTANT_OF_ActualBillContent();

	public String getMED_PRES_OF_ActualBillContent();

	//public long getBillNumber_OF_ActualBillContent();

	public int getNBR_OF_ActualBillContent();

	public BillsContentsTBL getBillContentByID_OF_ActualBillContent(Long id);

	public Long[] getBillsContentByBillNumber(Long billNumber);

	public void setDATE_DENT_HEURE_OF_ActualBillContent(String date_dent_heure);

	public void setH_OF_ActualBillContent(String h);

	public void setMED_OF_ActualBillContent(String med);

	public void setCODE_TARIF_LIBELLE_OBJECT_OF_ActualBillContent(
			String code_libelle);

	public void setMONTANT_OF_ActualBillContent(double montant);

	public void setMED_PRES_OF_ActualBillContent(String med_pres);

	public void setNBR(int nbr);

}
